package br.com.usjt.sge.complemento;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.Session;

public class EnderecoDAOHibernate implements EnderecoDAO {

	private static final Logger logger = Logger
			.getLogger(EnderecoDAOHibernate.class.getName());
	//private static final Class Endereco = null;
	private Session session;

	public void setSession(Session session) {
		this.session = session;
	}

	public void salvar(Endereco endereco) {
		try {
			this.session.save(endereco);
			logger.info("Endereco salvo na base de dados");

		} catch (Throwable e) {
			logger.error("Não foi possível salvar endereço " + e.getMessage());
			throw new ExceptionInInitializerError();
		}

	}
	public void excluir(Endereco endereco) {
		try {
			this.session.delete(endereco);
			logger.info("Endereco excluido da de dados");

		} catch (Throwable e) {
			logger.error("Erro ao excluir o endereço :" + e.getMessage());
			throw new ExceptionInInitializerError();
		}
	
	}

	public void alterar(Endereco endereco) {
		try {
			this.session.update(endereco);
			logger.info("Endereco alterado na base de  dados");

		} catch (Throwable e) {
			logger.error("Erro na tentativa de alterar o endereço :" + e.getMessage());
			throw new ExceptionInInitializerError();
		}

	}

	public List<Endereco> listar() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Endereco buscarEndereco(Integer cod_endereco) {
		// TODO Auto-generated method stub
		return (Endereco) this.session.get(Endereco.class, cod_endereco);
	}

	@Override
	public Integer buscarPorLogradouro(String endereco) {
		
		String hql = "select e from Endereco e where e.logradouro = :endereco";
		Query consulta = this.session.createQuery(hql);
		consulta.setString("endereco", endereco);
		
		Endereco end = (Endereco) consulta.uniqueResult();
		Integer codigoEstacionamento = end.getEndereco();
			
		return codigoEstacionamento;
		
	}

		
	


}
